home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 September / PCWorld_2006-09_cd.bin / v cisle / hexer / mpth_17.exe / {app} / scripts / XOR Data.mps < prev   
Text File  |  2005-05-22  |  1KB  |  52 lines

  1. INCLUDE '*.lng'
  2. = xor a file's contents
  3.  
  4. option globalvars 1
  5. var start dword count dword xval qword editorf file val qword oldpos dword rest dword
  6.  
  7. editorf = fileopen('::current', 'rw')
  8. number_radix = 10
  9. number_prefix = ''
  10. number_suffix = ''
  11. start = dword(input(__XD1__,__XD2__,text(filegetprop(editorf, 'selstart'))))
  12. if filegetprop(editorf, 'selcount') == 0
  13.   count = filesize(editorf) - start
  14. else
  15.   count = filegetprop(editorf, 'selcount')
  16. endif
  17. count = dword(input(__XD1__, __XD3__, Text(count)))
  18. xval = qword(input(__XD1__,__XD4__,'255'))
  19. if xval > 0:= qword is signed
  20.   if xval < 256:inc xval (xval << 8):endif
  21.   if xval < 0x10000:inc xval (xval << 16):endif
  22.   if xval < 0x100000000:inc xval (xval << 32):endif
  23. endif
  24.  
  25. fileseek editorf start
  26. loop schleife (count / 8)
  27. rest = count mod 8
  28. if rest != 0
  29.   val = 0
  30.   oldpos = filepos(editorf)
  31.   count=fileread(editorf, @val):= use in function context to avoid short read error
  32.   fileseek editorf oldpos
  33.   filewrite editorf textcopy(data2text(qword(val xor xval)),1, rest)
  34. endif
  35. showprogress 100, 100
  36. fileclose editorf
  37. end
  38.  
  39. @@schleife
  40. oldpos = filepos(editorf)
  41. fileread editorf val
  42. fileseek editorf oldpos
  43. val = val xor xval
  44. filewrite editorf val
  45. showprogress count+start, filepos(editorf)-start
  46. return
  47.  
  48.  
  49.  
  50.  
  51.  
  52.